/*********************************************************************************
  *Copyright (c)    2021   xldeng
  *FileName:        739.cpp.c
  *Author:          xldeng
  *Version:         1.0
  *Date:            2021/2/18 11:05
  *Description:     
  *Others:          
  *Function List:   
     1.…………
  *History:  
     1.Date:
       Author:
       Modification:
**********************************************************************************/
//请根据每日 气温 列表，重新生成一个列表。
// 对应位置的输出为：要想观测到更高的气温，至少需要等待的天数。
// 如果气温在这之后都不会升高，请在该位置用0 来代替。
//
//例如，给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73]，你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。
//
//提示：气温 列表长度的范围是[1, 30000]。每个气温的值的均为华氏度，都是在[30, 100]范围内的整数。
#include "../header.h"

class Solution {
public:
    vector<int> dailyTemperatures(vector<int> &T) {
        vector<int> ans(T.size());
        stack<int> stack;
        for (int i = T.size() - 1; i >= 0; --i) {
            while (!stack.empty() && T[i] >= T[stack.top()]){
                stack.pop();
            }
            ans[i] = stack.empty() ? 0 : stack.top() - i;
            stack.push(i);
        }
        return ans;
    }
};

